<!--
    Powered By nodePPT - This is probably the best web presentation tool so far!
    version: 1.4.2
    site: https://github.com/ksky521/nodePPT
    date: 
-->
<!doctype html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Maven简介 - By 周炜</title>
    <link rel="stylesheet" media="all" href="./css/nodeppt.css">
    <link rel="stylesheet" media="only screen and (max-device-width: 480px)" href="./css/phone.css">
    
    <link rel="stylesheet" href="./js/highlight/styles/monokai_sublime.css">
    <link rel="stylesheet" href="./css/font-awesome.css">
    
<link rel="stylesheet" href="./css/theme.moon.css">
</head>
<body>
<div class="slides">
    <slides id="container">
        <slide class="slide"><section class="slide-wrapper"><article class="flexbox vcenter">
<h1>Maven简介</h1>
<p>青岛理工大学</p>
<p>周炜</p>

</article></section></slide>
<slide class="slide"><section class="slide-wrapper"><article>
<ul class="rollIn">
<li><h2>Maven简介及安装</h2>
</li>
<li><h2>Maven项目目录及创建</h2>
</li>
<li><h2>Maven坐标、仓库</h2>
</li>
<li><h2>Maven生命周期、插件及命令</h2>
</li>
<li><h2>Maven依赖配置</h2>
</li>
<li><h2>Maven构建SSH Web应用</h2>
</li>
</ul>

</article></section></slide>
<slide class="slide"><section class="slide-wrapper"><article>
<img src="assets/markdown-img-paste-20170509145814740.png" alt="">
<ul class="rollIn">
<li>收集依赖构件到CLASSPATH</li>
<li>编写源代码、配置信息</li>
<li>Javac编译</li>
<li>单元测试</li>
<li>产品打包、发行</li>
<li>代码共享、储存，以及版本控制</li>
<li>Jar hell</li>
</ul>

</article></section></slide>
<slide class="slide"><section class="slide-wrapper"><hgroup>
<h2>唯快不破-maven快速入门</h2>

</hgroup><article>

<ul>
<li>Maven是基于项目对象模型（POM），可以通过一小段描述信息来管理项目的构建、报告和文档的软件项目管理工具</li>
<li><a href="http://maven.apache.org/" target="_blank">maven安装</a>，设置环境变量(path中%M2_HOME%/bin)</li>
<li>maven本地仓库默认安装位置及修改</li>
<li>添加国内阿里云镜像</li>
<li>IDE中使用maven</li>
</ul>

</article></section></slide>
<slide class="slide"><section class="slide-wrapper"><article>
<h2>Maven项目目录结构</h2>
<img src="assets/markdown-img-paste-20170509154542719.png" alt="">

</article></section></slide>
<slide class="slide"><section class="slide-wrapper"><hgroup>
<h2>使用Maven创建第一个项目</h2>

</hgroup><article>

<ul>
<li>注意修改Source Folder(IDE)</li>
<li>编译 <code>mvn compile</code></li>
<li>打包 <code>mvn package</code></li>
<li>引用验证</li>
<li>使用<code>mvn archetype:generate</code>自动创建Maven项目目录</li>
<li>IDE中自动创建Maven项目目录(quickstart,web)</li>
</ul>

</article></section></slide>
<slide class="slide"><section class="slide-wrapper"><hgroup>
<h2>Maven坐标</h2>

</hgroup><article>

<p>Maven通过<code>坐标</code>来定位搜寻获取某个<code>Maven构件(artifact
)</code>(模块)，一个坐标包括：</p>
<ul class="rollIn">
<li><strong><em>groupId</em></strong> 定义当前Maven(模块)项目隶属的实际项目，一般以反向域名(组织+项目)表示。如<code>SpringFramework项目</code>会对应<code>spring-core</code>、<code>spring-context</code>等多个模块项目。 </li>
<li><strong><em>artifactId</em></strong> 定义构件所指的Maven构件模块，推荐使用所属项目名作为前缀后加上模块名，如<code>spring-core</code>。一般项目中Java类包名使用<code>groupId.afrtifactId</code>的形式。</li>
<li><strong><em>version</em></strong> 定义模块版本</li>
<li><strong><em>package</em></strong> 定义Maven项目的打包方式，<code>jar</code>或者<code>war</code>等，不同的打包方式会具有不同的生命周期。最终生成的包为<code>构件模块名-版本号.打包</code>，如spring-context-4.3.8.RELEASE.jar。</li>
</ul>

</article></section></slide>
<slide class="slide"><section class="slide-wrapper"><hgroup>
<h2>Maven仓库</h2>

</hgroup><article>

<ul>
<li>本地仓库</li>
<li>远程仓库</li>
<li>中央仓库（定义在<code>lib/maven-model-builder-3.3.9.jar</code>中的超级(父)POM文件<code>pom-4.0.0.xml</code>中）</li>
<li>映像仓库（在<code>conf/settings.xml</code>文件中设置）</li>
<li>通过仓库查找构件（<a href="http://mvnrepository.com/" target="_blank">http://mvnrepository.com/</a>）</li>
<li>查找顺序与mvn install</li>
</ul>

</article></section></slide>
<slide class="slide"><section class="slide-wrapper"><article>
<h2>Maven生命周期</h2>
<h3><font color="red">Maven对既有项目开发进行总结和抽象，总结出的软件开发部署流程称作<code>生命周期</code>，一共有3套：</font></h3>
<hr>
<ul class="rollIn">
<li>clean：清理项目</li>
<li>default：构建项目</li>
<li>site：建立项目站点</li>
</ul>
<hr class="rollIn">
<p>每个生命周期又包括若干阶段</p>

</article></section></slide>
<slide class="slide"><section class="slide-wrapper"><article>
<h2>clean生命周期</h2>
<ul>
<li><strong><em>pre-clean</em></strong> 执行清理前的工作</li>
<li><strong><em>clean</em></strong>    清理上一次构建生成的所有文件，即删除target目录。</li>
<li><strong><em>post-clean</em></strong> 执行清理后的文件</li>
</ul>

</article></section></slide>
<slide class="slide"><section class="slide-wrapper"><article>
<h2>default  生命周期(核心)</h2>
<ul class="rollIn">
<li><strong><em>process-sources</em></strong> 处理项目主资源文件。一般来说，是对<code>/src/main/resources</code>目录的内容进行变量替换等工作后，复制到项目输出的主classpath目录中。</li>
<li><strong><em>compile</em></strong>  编译项目的主源码。一般来说，是编译<code>src/main/java</code>目录下的Java文件至项目输出的主classpath目录中。</li>
<li><strong><em>process-test-resources</em></strong> 处理项目测试资源文件。一般来说，是对<code>src/test/resources</code>目录的内容进行变量替换等工作后，复制到项目输出的主classpath目录中。</li>
<li><strong><em>test-compile</em></strong> 编译项目的测试代码。一般来说，是编译<code>src/test/java</code>目录下的Java文件至项目输出的主classpath目录中。</li>
</ul>

</article></section></slide>
<slide class="slide"><section class="slide-wrapper"><article>
<h2>default  生命周期(核心)续</h2>
<ul class="rollIn">
<li><strong><em>test</em></strong> 使用单元测试框架进行测试，测试代码不会被打包或部署。</li>
<li><strong><em>package</em></strong> 接受编译好的代码，打包成可发布的格式，如jar或者war。</li>
<li><strong><em>install</em></strong> 将包安装到Maven本地仓库，供本地其他Maven项目使用。</li>
<li><strong><em>deploy</em></strong> 将最终的包复制到远程仓库，供其他开发人员和Maven项目使用。</li>
</ul>

</article></section></slide>
<slide class="slide"><section class="slide-wrapper"><article>
<h2>site生命周期</h2>
<ul>
<li><strong><em>pre-site</em></strong> 在生成项目站点前要做的工作</li>
<li><strong><em>site</em></strong>    生成项目的站点文档</li>
<li><strong><em>post-site</em></strong> 在生成项目站点后要完成的工作</li>
<li><strong><em>site-deploy</em></strong> 发布生成的站点到服务器上</li>
</ul>
<p><a href="http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html#Lifecycle_Reference" target="_blank">完整官方参考</a></p>

</article></section></slide>
<slide class="slide"><section class="slide-wrapper"><article>
<h2>命令行与生命周期</h2>
<p> Maven通过命令调用的生命周期阶段</p>
<ul class="rollIn">
<li><strong><em>mvn clean</em></strong> 调用clean生命周期的<code>clean</code>阶段，实际执行的阶段为<code>clean生命周期</code>的<code>pre-clean</code>和<code>clean</code></li>
<li><strong><em>mvn test</em></strong> 调用default生命周期的<code>test</code>阶段，实际执行的阶段为<code>default生命周期</code>在<code>test</code>之前的所有阶段及<code>test阶段</code></li>
<li><strong><em>mvn clean install</em></strong> 调用clean生命周期的<code>clean阶段</code>以及deafault生命周期的<code>install阶段</code>。实际执行的阶段为<code>clean生命周期</code>在<code>clean</code>之前的所有阶段及<code>clean阶段</code>和<code>default生命周期</code>在<code>install</code>之前的所有阶段及<code>install阶段</code>。</li>
</ul>

</article></section></slide>
<slide class="slide"><section class="slide-wrapper"><article>
<h2>Maven插件</h2>
<ul class="rollIn">
<li>Maven使用各种插件完成生命周期各阶段的实际任务的实现。<a href="http://maven.apache.org/plugins/index.html#" target="_blank">官方插件</a>。</li>
<li>每个插件完成多个功能，每个功能被称作<strong><em>目标(plugin goal)</em></strong> 。如<code>compile插件</code>的<code>compile目标</code>，写作<code>compile:compile</code>，实现编译Java代码的功能。</li>
<li>插件的目标同生命周期的阶段相<strong><em>绑定</em></strong>，以完成某个具体的功能。如<code>compile:compile目标</code>绑定到<code>default</code>生命周期的<code>compile</code>阶段。</li>
<li>绑定分为<strong><em>内置绑定</em></strong>同<strong><em>自定义绑定</em></strong>。</li>
</ul>

</article></section></slide>
<slide class="slide"><section class="slide-wrapper"><article>
<h2>Maven内置绑定</h2>
<hr>
<h6>为了能让用户几乎不用任何配置就能构建Maven项目，Maven在核心为一些主要的生命周期阶段绑定了很多插件的目标。当用户通过命令行调用生命周期阶段的时候，对应的插件目标就会执行响应的任务。以下阶段内置绑定了插件目标：</h6>
<hr>
<p><img src="assets/markdown-img-paste-20170510144957976.png" width = "49%" />
<img src="assets/markdown-img-paste-20170510145102810.png" width = "49%" /></p>

</article></section></slide>
<slide class="slide"><section class="slide-wrapper"><article>
<img src="assets/markdown-img-paste-20170510145138241.png" alt="">

</article></section></slide>
<slide class="slide"><section class="slide-wrapper"><hgroup>
<h2>Maven常用命令</h2>

</hgroup><article>

<ul class="rollIn">
<li>mvn -v</li>
<li>mvn clean</li>
<li>mvn compile</li>
<li>mvn test</li>
<li>mvn package</li>
<li>mvn install</li>
</ul>

</article></section></slide>
<slide class="slide"><section class="slide-wrapper"><article>
<h2>usage: mvn [options] [<goal(s)>] [<phase(s)>]</h2>
<ul>
<li>一个goal是独立的，它可以被绑定到多个phase中去，也可以一个phase都没有。如果一个goal没有被绑定到任何一个lifecycle，它仍然可以直接被调用，而不是被lifecycle调用。</li>
<li>phase其实就是goal的容器。实际被执行的都是goal。phase被执行时，实际执行的都是被绑定到该phase的goal。</li>
<li>goal与goal之间是独立的。因此单独执行一个goal不会导致其他goal被执行。</li>
<li><code>mvn clean dependency:copy-dependencies package</code><ul>
<li><code>clean</code>是phase</li>
<li><code>dependency:copy-dependencies</code>是plugin-in dependency 的goal copy-dependencies</li>
<li><code>package</code>也是一个phase</li>
<li>maven会顺序执行这3个对象中包含的所有goal</li>
</ul>
</li>
</ul>

</article></section></slide>
<slide class="slide"><section class="slide-wrapper"><hgroup>
<h2>Maven自定义绑定</h2>

</hgroup><article>

<h6>用户还能够自己选择将某个插件目标绑定到生命周期的某个阶段上，让Maven在构建过程中执行更多任务。</h6>
<pre><code>&lt;build&gt;
    &lt;plugins&gt;
      &lt;plugin&gt;
        &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;
        &lt;artifactId&gt;maven-source-plugin&lt;/artifactId&gt;
        &lt;version&gt;3.0.1&lt;/version&gt;
        &lt;executions&gt;
            &lt;execution&gt;
            &lt;phase&gt;package&lt;/phase&gt;
            &lt;goals&gt;
              &lt;goal&gt;jar-no-fork&lt;/goal&gt;
            &lt;/goals&gt;
            &lt;configuration&gt;
            &lt;/configuration&gt;
          &lt;/execution&gt;
        &lt;/executions&gt;
      &lt;/plugin&gt;
    &lt;/plugins&gt;
  &lt;/build&gt;
</code></pre>
</article></section></slide>
<slide class="slide"><section class="slide-wrapper"><article>
<h2>POM文件解析1 <a href="http://maven.apache.org/pom.html" target="_blank">官方参考</a></h2>
<p><img src="assets/markdown-img-paste-20170510170747234.png" width = "59%"  align="left"/>
<img src="assets/markdown-img-paste-20170510170933875.png" width = "40%"  align="right"/></p>

</article></section></slide>
<slide class="slide"><section class="slide-wrapper"><article>
<h2>POM文件解析2</h2>
<p><img src="assets/markdown-img-paste-20170510171403865.png" width = "59%"  align="left"/>
<img src="assets/markdown-img-paste-20170510171508518.png" width = "40%"  align="right"/></p>

</article></section></slide>
<slide class="slide"><section class="slide-wrapper"><article>
<h2>POM文件解析3</h2>
<p><img src="assets/markdown-img-paste-20170510171719624.png" width = "59%"  align="left"/>
<img src="assets/markdown-img-paste-20170510171745759.png" width = "40%"  align="right"/></p>

</article></section></slide>
<slide class="slide"><section class="slide-wrapper"><article>
<h2>Maven依赖管理-依赖范围</h2>
<p>Maven在<code>编译</code>、<code>测试</code>、<code>运行</code>时需要使用到不同的jar包，依赖范围指定jar包所属的范围，一共有6种范围，默认为<code>compile</code>，<a href="http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Dependency_Scope" target="_blank">官方参考</a>。
<img src="assets/markdown-img-paste-20170510173932793.png" alt=""></p>

</article></section></slide>
<slide class="slide"><section class="slide-wrapper"><article>
<h2>Maven依赖管理-依赖范围</h2>
<p><code>system范围</code>可以使用没有在中央仓库中的jar包。</p>
<pre><code>&lt;dependency&gt;  
    &lt;groupId&gt;org.jeewx&lt;/groupId&gt;  
    &lt;artifactId&gt;jeewx-api&lt;/artifactId&gt;  
    &lt;version&gt;1.1-SNAPSHOT&lt;/version&gt;  
    &lt;scope&gt;system&lt;/scope&gt;  
      &lt;systemPath&gt;${pom.basedir}/src/main/webapp/WEB-INF/lib/jeewx-api-1.1-SNAPSHOT.jar&lt;/systemPath&gt;
      &lt;systemPath&gt;${java.home}/lib/rt.jar&lt;/systemPath&gt;
&lt;/dependency&gt;
</code></pre>
</article></section></slide>
<slide class="slide"><section class="slide-wrapper"><article>
<p>Maven依赖管理-使用自有jar(依赖传递)</p>
<pre><code>&lt;dependency&gt;
    &lt;groupId&gt;com.mylib&lt;/groupId&gt;
    &lt;artifactId&gt;mylib-core&lt;/artifactId&gt;
    &lt;version&gt;0.0.1&lt;/version&gt;
&lt;/dependency&gt;
&lt;plugin&gt;
    &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;
    &lt;artifactId&gt;maven-install-plugin&lt;/artifactId&gt;
    &lt;version&gt;2.5.2&lt;/version&gt;
    &lt;executions&gt;
        &lt;execution&gt;
            &lt;id&gt;install-external&lt;/id&gt;
            &lt;phase&gt;clean&lt;/phase&gt;
            &lt;configuration&gt;
                &lt;file&gt;${basedir}/src/main/webapp/WEB-INF/lib/mylib-core-0.0.1.jar&lt;/file&gt;
                &lt;pomFile&gt;${pom.basedir}/src/main/webapp/WEB-INF/lib//mylib-core-0.0.1.pom&lt;/pomFile&gt;
                &lt;repositoryLayout&gt;default&lt;/repositoryLayout&gt;
                &lt;groupId&gt;com.mylib&lt;/groupId&gt;
                &lt;artifactId&gt;mylib-core&lt;/artifactId&gt;
                &lt;version&gt;0.0.1&lt;/version&gt;
                &lt;packaging&gt;jar&lt;/packaging&gt;
                &lt;generatePom&gt;false&lt;/generatePom&gt;
            &lt;/configuration&gt;
            &lt;goals&gt;
                &lt;goal&gt;install-file&lt;/goal&gt;
            &lt;/goals&gt;
        &lt;/execution&gt;
    &lt;/executions&gt;
&lt;/plugin&gt;
</code></pre>
</article></section></slide>
<slide class="slide"><section class="slide-wrapper"><article>
<h2>Maven依赖管理-依赖传递</h2>
<ul>
<li>如果项目A依赖构建B，构建B依赖于构建C，那么A自动依赖于构建C。
<img src="assets/markdown-img-paste-20170511104253495.png" alt=""></li>
<li><p>存在多个重复依赖时的选择原则：</p>
<ul>
<li><p>短路优先</p>
<img src="assets/markdown-img-paste-20170511104604800.png" alt="">
</li>
<li>路径长度相同，先声明先优先</li>
</ul>
</li>
</ul>

</article></section></slide>
<slide class="slide"><section class="slide-wrapper"><article>
<h2>Maven依赖管理-依赖排除</h2>
<ul>
<li>对于不想引用的依赖，可以使用<code>&lt;exclude&gt;</code>进行排除
<img src="assets/markdown-img-paste-20170511110455749.png" alt=""><pre><code>&lt;!-- https://mvnrepository.com/artifact/org.hibernate/hibernate --&gt;
&lt;dependency&gt;
  &lt;groupId&gt;org.hibernate&lt;/groupId&gt;
  &lt;artifactId&gt;hibernate&lt;/artifactId&gt;
  &lt;version&gt;3.2.2.ga&lt;/version&gt;
  &lt;exclusions&gt;  
        &lt;exclusion&gt;  
            &lt;artifactId&gt;net.sf.ehcache&lt;/artifactId&gt;  
            &lt;groupId&gt;ehcache&lt;/groupId&gt;  
        &lt;/exclusion&gt;  
    &lt;/exclusions&gt;  
&lt;/dependency&gt;
</code></pre></li>
</ul>

</article></section></slide>
<slide class="slide"><section class="slide-wrapper"><article>
<h2>Maven依赖管理-聚合和继承</h2>
<ul>
<li>聚合主要用于多模块项目的实现</li>
<li>继承主要用于依赖等配置信息从父项目的复用，父项目使用<code>&lt;dependencyManagement&gt;</code>标签，子项目使用<code>&lt;package&gt;</code>标签及简化的<code>&lt;dependency&gt;</code>标签</li>
</ul>

</article></section></slide>
<slide class="slide"><section class="slide-wrapper"><article>
<h2>Maven最佳实践</h2>
<pre><code>&lt;repositories&gt;
        &lt;repository&gt;
            &lt;id&gt;jeecg-snapshots&lt;/id&gt;
            &lt;name&gt;jeecg-snapshots Repository&lt;/name&gt;
            &lt;url&gt;http://maven.jeecg.org/nexus/content/repositories/snapshots&lt;/url&gt;
            &lt;snapshots&gt;
                &lt;enabled&gt;true&lt;/enabled&gt;
            &lt;/snapshots&gt;
        &lt;/repository&gt;
    &lt;/repositories&gt;
</code></pre>
</article></section></slide>
<slide class="slide"><section class="slide-wrapper"><article>
<pre><code>&lt;properties&gt;
          &lt;spring.version&gt;3.1.1.RELEASE&lt;/spring.version&gt;
&lt;/properties&gt;
  &lt;!-- SPRING start --&gt;
&lt;/dependencies&gt;
        &lt;dependency&gt;
            &lt;groupId&gt;org.springframework&lt;/groupId&gt;
            &lt;artifactId&gt;spring-core&lt;/artifactId&gt;
            &lt;version&gt;${spring.version}&lt;/version&gt;
        &lt;/dependency&gt;
&lt;/dependencies&gt;
</code></pre>
</article></section></slide>
<slide class="slide"><section class="slide-wrapper"><article>
<pre><code>&lt;build&gt;
      &lt;finalName&gt;jeewx&lt;/finalName&gt;
          &lt;plugins&gt;
              &lt;plugin&gt;
                  &lt;artifactId&gt;maven-compiler-plugin&lt;/artifactId&gt;
                  &lt;configuration&gt;
                      &lt;source&gt;1.7&lt;/source&gt;
                      &lt;target&gt;1.7&lt;/target&gt;
                      &lt;encoding&gt;UTF-8&lt;/encoding&gt;
                  &lt;/configuration&gt;
              &lt;/plugin&gt;
</code></pre>
</article></section></slide>
<slide class="slide"><section class="slide-wrapper"><article>
<pre><code>&lt;!-- tomcat7插件 --&gt;
              &lt;plugin&gt;
                  &lt;groupId&gt;org.apache.tomcat.maven&lt;/groupId&gt;
                  &lt;artifactId&gt;tomcat7-maven-plugin&lt;/artifactId&gt;
                  &lt;version&gt;2.2&lt;/version&gt;
                  &lt;configuration&gt;
                      &lt;port&gt;80&lt;/port&gt;
                      &lt;path&gt;/jeewx&lt;/path&gt;
                      &lt;uriEncoding&gt;UTF-8&lt;/uriEncoding&gt;
                  &lt;/configuration&gt;
              &lt;/plugin&gt;
          &lt;/plugins&gt;
</code></pre>
</article></section></slide>
<slide class="slide"><section class="slide-wrapper"><article>
<pre><code>&lt;resources&gt;
              &lt;resource&gt;
                  &lt;directory&gt;src/main/java&lt;/directory&gt;
                  &lt;includes&gt;
                      &lt;include&gt;**/*.xml&lt;/include&gt;
                      &lt;include&gt;**/*.sql&lt;/include&gt;
                      &lt;include&gt;**/*.ftl&lt;/include&gt;
                  &lt;/includes&gt;
                  &lt;filtering&gt;false&lt;/filtering&gt;
              &lt;/resource&gt;
              &lt;resource&gt;
                  &lt;directory&gt;src/main/resources&lt;/directory&gt;
              &lt;/resource&gt;
          &lt;/resources&gt;
</code></pre>
</article></section></slide>
<slide class="slide"><section class="slide-wrapper"><article>
<p>SSH基类项目 <a href="http://git.oschina.net/toweizhou/s2shbase" target="_blank">http://git.oschina.net/toweizhou/s2shbase</a></p>

</article></section></slide>
<slide class="slide"><section class="slide-wrapper"><article>
<h2>参考</h2>
<ul>
<li><a href="http://www.imooc.com/learn/443" target="_blank">immoc 项目管理利器——maven</a></li>
<li>《Maven实战》(许晓斌著)</li>
<li><a href="http://maven.apache.org/" target="_blank">http://maven.apache.org/</a></li>
</ul>

</article></section></slide>
        

        <!-- <slide class="slide logoslide dark nobackground">
            <article class="flexbox vcenter">
                <h2 style="color: white;">Powered By nodePPT v1.4.2</h2>
            </article>
        </slide> -->
        <div class="slideTip" id="tip"></div>
    </slides>
</div>
<canvas id="drawBoard" class="draw-board" width="900" height="700"></canvas>
<div class="progress"><span id="progress"></span></div>
<div id="_buttons">
    <div class="_btn-box" id="_btn-box" style="display:none;">
        <button class="fa fa-arrow-circle-left" id="_btn-prev"></button>
        <button class="fa fa-arrow-circle-right" id="_btn-next"></button>
        <button class="fa fa-paint-brush" id="_btn-brush"></button>
        <button class="fa fa-compress" id="_btn-overview" data-toggle="fa fa-expand"></button>
    </div>
    <button class="fa fa-bars" id="_btn-bar"  data-toggle="fa fa-close"></button>
</div>
<script src="./js/mixjs/lib/mix.0.3.0.min.js"></script>
<script>
var base = location.protocol + '//' + location.host;

var path = (location.pathname + '#').split('/').filter(function(v){
    return !!v;
});
path.pop();
path = path.join('/');
MixJS.config({
    baseURL: [ base, path, 'js'].join('/')+'/'
});

</script>
<script src="./js/mixjs/lib/event/broadcast.js"></script>
<script src="./js/nodeppt.js"></script>
<script>
Slide.init({
    containerID: 'container',
    drawBoardID: 'drawBoard',
    slideClass: '.slide',
    buildClass: '.build',
    progressID: 'progress',
    transition: 'slide3',
    width: 1100,
    dir: './',
    
    //打开下面的注释就开启postMessage方式
    //访问网址127.0.0.1:8080/ppt/demo#client
    control:{
        type: 'postMessage',
        args:{
            isControl:  false
        }
    },
    
    tipID: 'tip'
});
MixJS.loadJS('highlight/highlight.pack.js',function(){
    hljs.tabReplace = '  ';
    hljs.initHighlightingOnLoad();
});
</script>


<!--placeholder-->
</body>
</html>
